package gov.gfbzb.advice.util;

import java.security.MessageDigest;
import java.security.NoSuchAlgorithmException;
import java.util.Random;
import java.util.UUID;

public class StringUtil {

    /**
     * 生成问题码
     * @return 问题码
     */
    public static String generateQuestionNo() {
        UUID uuid = UUID.randomUUID();
        String[] parts = uuid.toString().split("-");

        // 重组各部分并修改版本号位
        return String.format("%s-%s-9%s-%s-%s",
                parts[0],
                parts[1].substring(0, 4),
                parts[2].substring(1),  // 第三部分以1开头
                parts[3],
                parts[4]
        );
    }

    /**
     * 对字符串进行 MD5 加密（32 位小写）
     */
    public static String md5(String input) {
        try {
            // 获取 MD5 摘要实例
            MessageDigest md = MessageDigest.getInstance("MD5");
            // 计算摘要
            byte[] digest = md.digest(input.getBytes());
            // 将字节数组转换为十六进制字符串
            StringBuilder hexString = new StringBuilder();
            for (byte b : digest) {
                String hex = String.format("%02x", b);
                hexString.append(hex);
            }
            return hexString.toString();
        } catch (NoSuchAlgorithmException e) {
            throw new RuntimeException("MD5 算法不可用", e);
        }
    }

    /**
     * 生成n位数验证码
     *
     * @param num 数字
     * @return 验证码
     */
    public static String getCheckData(Integer num) {
        String characters = "abcdefghijklmnpqrstuvwxyz123456789";
        Random random = new Random();
        StringBuilder captcha = new StringBuilder();
        for (int i = 0; i < num; i++) {
            int index = random.nextInt(characters.length());
            captcha.append(characters.charAt(index));
        }
        return captcha.toString();
    }

}
